// app.js
module.exports = app => {

    //请求前
    app.httpclient.on('request', req => {
        // app.logger.info(req.url);
        // req.url //请求 url
        // req.ctx //是发起这次请求的当前上下文

        // 可以在这里设置一些 trace headers，方便全链路跟踪

        // console.log("******************");
        // console.log(req.ctx.headers);
        // console.log("******************");
        // app.logger.info(app.urls('authorization'));
        // const token = req.ctx.session.token;
        //
        // if (token){
        //     // req.ctx.headers.Authorization = token;
        //     req.ctx.headers['Authorization'] = token;
        //     app.logger.info(req.url)
        //     app.logger.info(req.ctx.headers);
        // }
        // else{
        //     var urllib = require('urllib');
        //     urllib.request(app.urls('authorization'), { dataType: 'json' }).then(function (result) {
        //         if (200 == result.res.statusCode){
        //             let data = result.data;
        //             if (200 == data.code){
        //                 let authorization = data.data.authorization;
        //                 req.ctx.headers.Authorization = authorization;
        //                 req.ctx.session.token = authorization;
        //             }
        //         }
        //     }).catch(function (err) {
        //         console.error(err);
        //     });
        // }
        //
        // console.log("1331234646464");

    });
    //
    // //请求响应后
    // app.httpclient.on('response', result => {
    //     // result.res.status
    //     // result.ctx //是发起这次请求的当前上下文
    //     // result.req //对应的 req 对象，即 request 事件里面那个 req
    //
    //     if (200 == result.res.status){
    //
    //         let authorization = result.res.headers.authorization
    //         app.logger.info(authorization);
    //         result.ctx.session.token = authorization;
    //
    //         // let data = ctx.service.auth.get();
    //
    //
    //         // let p = new Promise(resolve => {
    //         //     const ctx = app.createAnonymousContext();
    //         //     ctx.service.auth.get().then(function (value) {
    //         //         console.log("******************");
    //         //         console.log(value);
    //         //         console.log("******************");
    //         //
    //         //         resolve(value);
    //         //     })
    //         // }).then(function (result) {
    //         //     return result;
    //         // });
    //
    //         // var urllib = require('urllib');
    //         //
    //         // urllib.request('http://nodejs.org').then(function (result) {
    //         //     // result: {data: buffer, res: response object}
    //         //     console.log('status: %s, body size: %d, headers: %j', result.res.statusCode, result.data.length, result.res.headers);
    //         // }).catch(function (err) {
    //         //     console.error(err);
    //         // });
    //
    //
    //     }else{
    //
    //     }
    //
    //
    //     // console.log(result);
    //
    // });



    /**
     * 定义base controller
     */
    class BaseController extends app.Controller {
        /**
         * 获取用户信息
         * @returns {*}
         */
        get member() {
            return this.ctx.session.member;
        }

        /**
         * 成功
         * @param data
         */
        success(data) {
            this.ctx.body = {
                code: 200,
                data,
            };
        }

        /**
         * 失败
         * @param code
         * @param message
         */
        fail(code = 500, message = 'fail'){
            this.ctx.body = {
                code,
                message
            }
        }

    }
    app.Controller = BaseController;
}